package utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

import java.sql.Date;
import java.sql.Time;

import model.Habilitacao;
import model.Item;





public class Utils {
	public static boolean isBlank(String string) {
		if (string==null)
			return true;
		else if (string.equals(""))
			return true;		
		else if (string.equals("0"))
			return true;
		else if (string.equals(" "))
			return true;
		else if (string.equals("	"))
			return true;
		
		else
			return false;
	}
	public static boolean isBlank(int inteiro) {								
		if (inteiro==0)
			return true;
		else
			return false;
	}
	
	
	public static boolean isBlank(Integer integer) {
		if (integer==null)
			return true;				
		else if (integer.intValue()==0)
			return true;
		else
			return false;
	}
	public static boolean isBlank(Date data) {
		
		if (data==null)
			return true;
		else if (data.equals("	"))
			return true;
		else if (data.equals("00/00/0000"))
			return true;
		else if (data.equals("0000/00/00"))
			return true;
		else if (data.equals("00-00-0000"))
			return true;
		else if (data.equals("0000-00-00"))
			return true;
		else if (data.equals("00.00.0000"))
			return true;
		else if (data.equals("0000.00.00"))
			return true;
		
		else
			return false;
	}
	public static boolean isBlank(Time time) {
		
		if (time==null)
			return true;
		
		
		return false;
		
	}
	
	public static boolean isBlank(float flutuante) {
		
		if (flutuante == 0)
			return true;
		
		return false;
	}
public static boolean isBlank(Float flutuante) {
		
	if (flutuante==null)
		return true;				
	else if (flutuante.floatValue()==0.0)
		return true;
	else
		return false;
	}


public static boolean contains(ArrayList<Item> items,Habilitacao habilitacao){
	int fim = items.size();
	for(int i=0;i<fim;i++){
		 
		 
		 if (items.get(i).getHabilitacao().getId()==habilitacao.getId())
			 return true;
	 }
	return false;
}

/**
* Retorna o m�s de uma {@link String} de data no formato {@link Integer} MM
* @param data {@link String} a ser retirada</em>
* @return Uma {@link Integer} do m�s
*/
public static Integer Moth(String data){
	if (data == null) return 0;
//	dd/MM/yyyy
	String date = data.substring(data.indexOf("/")+1,data.indexOf("/")+3);
	Integer integer = Integer.valueOf(date);
	return integer;
}
 
/**
* Transforma um {@link Date} de data em {@link String} no formato do sistema(dd/MM/yyyy)
* @param data {@link Date} a ser trasformada</em>
* @return Um objeto {@link String} no formato dd/MM/yyyy
*/
public static String DateToString(Date date ){
	if (date == null) return null;
//	formato do meu sistema
	String data = new SimpleDateFormat("dd/MM/yyyy").format(date);	
	return data;
}

public static String DateToString(Date date, String formatTo ){
	if (date == null) return null;
//	formato do meu sistema
	String data = new SimpleDateFormat(formatTo).format(date);	
	return data;
}




/**
* Retorna uma {@link String} com a data de hoje no formato do sistema(dd/MM/yyyy)
* @return Um objeto {@link String} no formato dd/MM/yyyy
*/
public static String Hoje(){
	Date date = new Date(System.currentTimeMillis());
//	formato do meu sistema
	String data = new SimpleDateFormat("dd/MM/yyyy").format(date);	
	return data;
}



/**
* Transforma uma {@link String} de data no formato do sistema(dd/MM/yyyy) em {@link Date} no formato do banco(yyyy-MM-dd)
* @param data {@link String} a ser trasformada</em>
* @return Um objeto {@link Date} no formato yyyy-MM-dd
*/
public static Date StringToDate(String data ){
	if (data == null) return null;
	if (data.lastIndexOf("/")==2) data=data+"/0001";
	java.util.Date dateAux = null;
	try {
//		formato do meu sistema
		dateAux = new SimpleDateFormat("dd/MM/yyyy").parse(data);
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
//	formato do meu banco
	String dataSQL = new SimpleDateFormat("yyyy-MM-dd").format(dateAux);
	Date date = Date.valueOf(dataSQL);
	return date;
}

public static String TimeToString(Time time ){
	if (time == null) return null;
//	formato do meu sistema
	String hora = new SimpleDateFormat("HH:mm").format(time);	
	return hora;
}


/**
* Transforma uma String de hora no formato HH:mm em Time no formato HH:mm:ss
* @param hora string a ser trasformada</em>
* @return Um objeto Time no formato HH:mm:ss
*/

public static Time StringToTime(String hora ){
	if (hora == null) return null;
	java.util.Date timeAux = null;
	try {
//		formato do meu sistema
		timeAux = new SimpleDateFormat("HH:mm").parse(hora);
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
//	formato do meu banco
	String timeSQL = new SimpleDateFormat("HH:mm:ss").format(timeAux);
	Time hour = Time.valueOf(timeSQL);
	return hour;
}




public static String getSimpleModelName(Class<?> class1){
	return class1.getName().substring(6);
}
public static String getSimpleServiceName(Class<?> class1){
	return class1.getName().substring(8,class1.getName().indexOf("Service"));
}
public static String getSimpleControlName(Class<?> class1){
	return class1.getName().substring(8,class1.getName().indexOf("Control"));
}
public static boolean isBlank(Object obj) {
	if (obj == null)
		return true;
	return false;
}
//public static Class<?> getModel(Class<?> control){
//	
//	String model = Utils.getSimpleControlName(control);
//	Class<?> clazz = null;
//	try {
//		clazz = Class.forName("model."+model);
//	} catch (ClassNotFoundException e) {
//		// TODO Auto-generated catch block
//		e.printStackTrace();
//	}
//	return clazz;
//}




public static String UpperFirstChar(String str){
	String chr=str.substring(0, 1);
	str=chr.toUpperCase()+str.substring(1);
	return str;
	
}
public static String booleanToSN(boolean boolean1) {
	if (boolean1) return "S"; 
	return "N";
}

/**
* Transforma uma String de S ou N em boolean
* @param volumoso string a ser trasformada</em>
* @return true caso a string seja igual a S e false caso seja diferente.
*/
public static Boolean toBoolean(String simnao) {
	// TODO Auto-generated method stub
//	if (simnao.compareToIgnoreCase("S")>0) return true;
	if ((simnao.equals("S"))||(simnao.equals("s"))) return true;
	return false;
}
}